﻿#region 참조 네임스페이스

using System.IO;
using System;

#endregion

namespace Skying.Net.Sockets
{
	/// <summary>
	/// 송수신 이벤트에 대한 전달 인자를 정의한다.
	/// </summary>
	public class TransferEventArgs : EventArgs
	{
		#region 프로퍼티

		/// <summary>
		/// 송수신된 데이터의 헤더를 가져온다.
		/// </summary>
		public Header Header
		{
			get;
			private set;
		}

		/// <summary>
		/// 데이터 버퍼 스트림을 가져온다.
		/// </summary>
		public MemoryStream DataStream
		{
			get;
			private set;
		}

		/// <summary>
		/// 데이터 객체를 가져온다.
		/// </summary>
		public object DataObject
		{
			get;
			private set;
		}

		/// <summary>
		/// 데이터 메시지를 가져온다.
		/// </summary>
		public string DataMessage
		{
			get;
			private set;
		}

		#endregion

		#region 생성자/소멸자

		public TransferEventArgs(Header header)
			: base()
		{
			this.Header = header;
		}

		public TransferEventArgs(Header header, MemoryStream dataStream)
			: this(header)
		{
			this.DataStream = dataStream;
		}

		public TransferEventArgs(Header header, object dataObject)
			: this(header)
		{
			this.DataObject = dataObject;
		}

		public TransferEventArgs(Header header, string dataMessage)
			: this(header)
		{
			this.DataMessage = dataMessage;
		}

		#endregion
	}
}